#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <stdlib.h>


int main()
{

   IplImage * original = 0; //aca cargamos la imagen posta
   IplImage * obtenida = 0; //esta es la que vamos a usar

   //cargamos la imagen y la pasa a blanco y negro directamente!
   if( (original = cvLoadImage ("lena.bmp", CV_LOAD_IMAGE_GRAYSCALE)) == 0 )
	   return -1;
   //entoces en original ya esta la imagen en byn
   //grabamos la imagen
   cvSaveImage("enByN.BMP", original);
   
   //estricutra del IplImage (las importantes)
   //sea img de tipo IplImage*
   //img->width el ancho
   //img->height el alto
   //img->widthStep = tamanio de toooda la fila de la imagen (alieada a 4) (recordad que el ancho real = img->with+img->with%4)
   //img->imageData la matriz de datos
   //ahora vamos a crear una imagen del tama;o de la anterior en obtenida
   if( (obtenida = cvCreateImage (cvGetSize (original), IPL_DEPTH_8U, 1) ) == 0 )
   	return -1;
   //obtenida tiene todos los datos de orignal pero el imageData todo en 0
   //ahora solo para mostrar como acceder a la amtriz hacemos la inversa de la foto byn
   char* imgData = obtenida->imageData;
   for(int i=0;i<obtenida->height;i++)
       for(int j=0;j<obtenida->widthStep;j++)
           if(j<obtenida->width)
           	imgData[i*obtenida->widthStep+j] = 255-original->imageData[i*obtenida->widthStep+j];
   //y listo!
   cvSaveImage("inversa.BMP", obtenida);
   
   return 0;

}


